home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / utility / 444 / utility2 / calljams.lst < prev    next >
File List  |  1989-08-15  |  7KB  |  181 lines

  1. ' *****************************************************************************
  2. ' *                                                                           *
  3. ' *  CALLJAMS.BAS: Ein Beispielprogramm, das zeigt, wie man JAMES.ACC         *
  4. ' *                von anderen GEM-Programmen her aufrufen kann.              *
  5. ' *                                                                           *
  6. ' *   * * * SO KANN _IHR_ PROGRAMM AUCH VON DEN MÖGLICHKEITEN VON * * *       *
  7. ' *   * * * JAMES, DEM DESKTOP-BUTLER PROFITIEREN ! ! !           * * *       *
  8. ' *                                                                           *
  9. ' *****************************************************************************
  10. '
  11. Dim Gem$(30)
  12. '
  13. '   Initialisierung...
  14. '
  15. Deffill 1,2,4
  16. Pbox -1,-1,640,400    !Bitte das hier nicht nachmachen!!
  17. Restore Men_zeile
  18. Cntr%=-1
  19. Repeat                !Menü aufbauen
  20.   Inc Cntr%
  21.   Read Gem$(Cntr%)
  22. Until Gem$(Cntr%)="****"
  23. '
  24. @Appl_find("JAMES   ")          !Name muß auf 8 zeichen aufgefüllt werden!
  25. If Rreturn%=-1
  26.   Alert 3,"JAMES.ACC nicht gefunden:|Entweder wurde das ACC um-|benannt oder ist nicht im|System.",1,"Abbruch",Wert%
  27.   End
  28. Else
  29.   James_id%=Rreturn%
  30.   Alert 1,"AP_ID von James: "+Str$(James_id%),1," OK ",Wert%
  31. Endif
  32. '
  33. Menu Gem$()
  34. On Menu  Gosub Verzweige                !Normale Menüleistenverwaltung
  35. On Menu Message Gosub James_antwortet   !`EVNT_MESSAGE`
  36. '
  37. My_ap_id%=0            !Die AP_ID des GFABASIC: Sollte eigentlich mit APPL_INIT
  38. '                      !richtig bestimmt werden.
  39. '
  40. Do                                      !Die EVNT_MULTI-Schleife
  41.   On Menu
  42. Loop
  43. '
  44. Procedure Verzweige                     !Reaktion auf Menüleiste
  45.   Local Wert%
  46.   '
  47.   Qq%=Menu(0)
  48.   If Qq%=1
  49.     @Info
  50.   Endif
  51.   On Qq%-10 Gosub Pling,D,Ende,D,D,Call_m1,Cm2,Cm2,Cm3,Cm3,Cm4,D,Cm0
  52.   Menu Off
  53. Return
  54. '
  55. Procedure Info                          !Menüpkt. info
  56.   Local Wert%
  57.   Alert 1,"Beispielprogramm zum |Aufruf von 'JAMES'.| |(PRG by Pascal Fellerich)",1,"   OK   ",Wert%
  58. Return
  59. '
  60. Procedure Pling                         !WITZIG!!!
  61.   Print "◆";
  62. Return
  63. '
  64. Procedure Call_m1                       !Main Menu aufrufen
  65.   @James(1)
  66. Return
  67. '
  68. Procedure Cm2                           !PRN_AUX-Menu aufrufen
  69.   @James(2)
  70. Return
  71. '
  72. Procedure Cm3                           !DISK-Menü aufrufen
  73.   @James(3)
  74. Return
  75. '
  76. Procedure Cm4                           !SETUP-MENU aufrufen
  77.   @James(4)
  78. Return
  79. '
  80. Procedure Cm0                   !James nach seiner Versionsnummer fragen
  81.   @James(0)
  82. Return
  83. '
  84. Procedure Ende
  85.   Alert 2,"Wie denn?  War das |etwa schon alles??",2," NEIN |JA",Wert%
  86.   If Wert%=2
  87.     Menu Kill
  88.     End
  89.   Endif
  90. Return
  91. '
  92. Procedure D                     !Dummyfunktion
  93.   Print Qq%
  94. Return
  95. '
  96. ' **********************************************************************
  97. ' *                                                                    *
  98. ' *  SO SCHICKT MAN JAMES EINE NACHRICHT:                              *
  99. ' *  Eine Message besteht aus 16 Bytes (8 Words). Dabei sind:          *
  100. ' *          Word 0: OpCode (für James)                                *
  101. ' *          Word 1: AP_ID des Aufrufenden Programmes                  *
  102. ' *          Word 2: 0 (immer!, wird von J. nicht beachtet)            *
  103. ' *          Word 3 bis 7: 0, werden nicht beachtet                    *
  104. ' *                                                                    *
  105. ' *  Dabei ist OpCode: $100 -> Versionsnummer fragen (siehe auch       *
  106. ' *                            Procedure James_antwortet)              *
  107. ' *                    $101 -> Call Main Menu                          *
  108. ' *                    $102 -> Call PRN-AUX-Menu                       *
  109. ' *                    $103 -> Call Disk-Menu                          *
  110. ' *  Wenn eine Dialogbox von James so aufgerufen wird, dann sperrt     *
  111. ' *  James vorsichtshalber das AES mit dem Aufruf 'WIND_UPDATE(2)'     *
  112. ' *  [begin Mcontrol].                                                 *
  113. ' *                                                                    *
  114. ' **********************************************************************
  115. Procedure James(N%)     !Mit Hilfe von APPL_WRITE bekommt James eine
  116.   If N%<0 Or N%>4       !Message geschickt.
  117.     Goto Xx
  118.   Endif
  119.   N%=N%+&H100
  120.   A$=String$(20,0)
  121.   Dpoke Varptr(A$),N%
  122.   Dpoke Varptr(A$)+2,My_ap_id%         !Aufrufer apid
  123.   @In(2,1,1,0)
  124.   Dpoke Gintin,James_id%
  125.   Dpoke Gintin+2,16
  126.   Lpoke Addrin,Varptr(A$)
  127.   Gemsys 12
  128.   Xx:
  129. Return
  130. '
  131. Procedure Appl_find(A$)
  132.   A$=A$+Chr$(0)
  133.   @In(0,1,1,0)
  134.   Lpoke Addrin,Varptr(A$)
  135.   Gemsys 13
  136.   Rreturn%=Dpeek(Gintout)
  137.   If Rreturn%>&H7FFF                  !in Assembler: ext.l INTOUT
  138.     Rreturn%=Rreturn% Or &HFFFF0000
  139.   Endif
  140. Return
  141. '
  142. Deffn Rreturn=Dpeek(Gintout)
  143. Procedure In(G2%,G4%,G6%,G8%)
  144.   Dpoke Gcontrl+2,G2%
  145.   Dpoke Gcontrl+4,G4%
  146.   Dpoke Gcontrl+6,G6%
  147.   Dpoke Gcontrl+8,G8%
  148. Return
  149. '
  150. ' **********************************************************************
  151. ' *                                                                    *
  152. ' *  SO ANTWORTET JAMES auf die Versions-Frage (OPCODE $100)           *
  153. ' *                                                                    *
  154. ' *  Im Message Buffer der aufrufenden Applikation findet sich         *
  155. ' *  folgendes:  Word 0: $100                                          *
  156. ' *              Word 1: AP_ID von James                               *
  157. ' *              Word 2: 0                                             *
  158. ' *              Word 3: Haupt-Revision von James                      *
  159. ' *              Word 4: Unter-Revision von James                      *
  160. ' *              Word 5: TOS Version. ($104 für TOS 1.4)               *
  161. ' *              Word 6 & 7: ????                                      *
  162. ' *                                                                    *
  163. ' **********************************************************************
  164. Procedure James_antwortet
  165.   If Menu(2)=James_id%
  166.     J_hiversion%=Menu(4)
  167.     J_loversion%=Menu(5)
  168.     Tos_version%=Menu(6)
  169.     Jversion$=Str$(J_hiversion%)+"."+Str$(J_loversion%)
  170.     Alert 3,"James meldet zurück:|>JAMES V "+Jversion$+"<|>TOS-Version "+Hex$(Tos_version%)+"<",1," OK ",Wert%
  171.   Endif
  172. Return
  173. '
  174. Men_zeile:
  175. Data  Desk ,  Info ,--------------------,-1,-2,-3,-4,-5,-6,
  176. Data  File ,  Pling!  ,---------------,  Ende ,
  177. Data  Butler ,  Hauptmenü       ,  RS-232 Params,  Printer Config,  Schreibschutz
  178. Data   Antivirus...,  Setup...,------------------,  James Version...,,,
  179. Data ****
  180. End
  181.